package com.atguigu.lease.common.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * mybatisplus的自动填充处理器，需要注入到ioc容器中才能生效
 *  当一个对象 有属性标注了 mp的TableFiled注解，并配置了 fill属性 ，对这个对象新增或更新时可以触发 填充处理器处理它
 */
@Component
public class LeaseMetaObjectHandler implements MetaObjectHandler {
    //新增时自动填充
    @Override
    public void insertFill(MetaObject metaObject) {
        //同时填充 创建时间 和更新时间
        // metaObject表示 目标对象(被新增或更新 触发填充的对象)
        if(metaObject.hasSetter("createTime")){
            metaObject.setValue("createTime" , new Date());
        }
        if(metaObject.hasSetter("updateTime")){
            metaObject.setValue("updateTime" , new Date());
        }

    }

    //更新时自动填充
    @Override
    public void updateFill(MetaObject metaObject) {
        // 更新数据才会触发
        if(metaObject.hasSetter("updateTime")){
            metaObject.setValue("updateTime" , new Date());
        }
    }
}
